<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<!-- SEO Meta Tags -->
<title>Shioa - 智能数据分析平台 | 实时监控频道收入与订阅增长</title>
<meta name="description" content="专业的YouTube频道数据分析平台，实时追踪频道收入、订阅增长、播放量趋势。支持多频道对比、数据导出、收入预测。帮助内容创作者优化策略，提升YouTube频道表现。">
<meta name="keywords" content="YouTube数据分析,YouTube频道分析,YouTube收入分析,订阅增长分析,YouTube Analytics,频道监控,内容创作者工具,YouTube统计,视频数据分析">
<meta name="author" content="YouTube Analytics Team">
<meta name="robots" content="index, follow">
<meta name="language" content="Chinese">

<!-- Open Graph Meta Tags -->
<meta property="og:title" content="Shioa - 智能数据分析平台">
<meta property="og:description" content="专业的YouTube频道数据分析平台，实时追踪频道收入、订阅增长、播放量趋势。帮助内容创作者优化策略，提升频道表现。">
<meta property="og:type" content="website">
<meta property="og:url" content="https://ytb.xiaoshanqing.tech">
<meta property="og:image" content="https://ytb.xiaoshanqing.tech/images/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:site_name" content="Shioa">
<meta property="og:locale" content="zh_CN">

<!-- Twitter Card Meta Tags -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Shioa - 智能数据分析平台">
<meta name="twitter:description" content="专业的YouTube频道数据分析平台，实时追踪频道收入、订阅增长、播放量趋势。">
<meta name="twitter:image" content="https://ytb.xiaoshanqing.tech/images/twitter-card.jpg">
<meta name="twitter:site" content="@youtube_analytics">
<meta name="twitter:creator" content="@youtube_analytics">

<!-- Canonical URL -->
<link rel="canonical" href="https://ytb.xiaoshanqing.tech">

<!-- Favicons -->
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/favicon-32x32.png">
<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">

<!-- Theme Color -->
<meta name="theme-color" content="#3b82f6">
<meta name="msapplication-TileColor" content="#3b82f6">

<!-- Structured Data -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebApplication",
  "name": "Shioa - 智能数据分析平台",
  "description": "专业的YouTube频道数据分析平台，实时追踪频道收入、订阅增长、播放量趋势",
  "url": "https://ytb.xiaoshanqing.tech",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "All",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "CNY"
  },
  "creator": {
    "@type": "Organization",
    "name": "Shioa Team"
  },
  "featureList": [
    "实时频道数据监控",
    "收入趋势分析",
    "订阅增长追踪",
    "多频道对比",
    "数据可视化图表",
    "数据导出功能"
  ]
}
</script>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: {
50: '#eff6ff',
100: '#dbeafe', 
200: '#bfdbfe',
300: '#93c5fd',
400: '#60a5fa',
500: '#3b82f6',
600: '#2563eb',
700: '#1d4ed8',
800: '#1e40af',
900: '#1e3a8a'
},
secondary: '#64748b',
accent: {
green: '#10b981',
purple: '#8b5cf6',
orange: '#f59e0b',
red: '#ef4444',
blue: '#06b6d4'
},
success: '#10b981',
warning: '#f59e0b',
danger: '#ef4444',
info: '#06b6d4'
},
borderRadius: {
'none': '0px',
'sm': '2px',
DEFAULT: '4px',
'md': '8px',
'lg': '12px',
'xl': '16px',
'2xl': '20px',
'3xl': '24px',
'full': '9999px',
'button': '8px'
},
fontFamily: {
'sans': ['Inter', 'ui-sans-serif', 'system-ui'],
'display': ['Inter', 'ui-sans-serif', 'system-ui']
},
boxShadow: {
'soft': '0 2px 15px -3px rgba(0, 0, 0, 0.07), 0 10px 20px -2px rgba(0, 0, 0, 0.04)',
'medium': '0 4px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 20px -5px rgba(0, 0, 0, 0.04)',
'strong': '0 10px 40px -10px rgba(0, 0, 0, 0.1), 0 2px 10px -2px rgba(0, 0, 0, 0.04)'
}
}
}
}
</script>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.5.0/echarts.min.js"></script>
<style>
body {
min-height: 1024px;
}
.table-container::-webkit-scrollbar {
height: 8px;
}
.table-container::-webkit-scrollbar-track {
background: #f1f1f1;
}
.table-container::-webkit-scrollbar-thumb {
background: #888;
border-radius: 4px;
}
.table-container::-webkit-scrollbar-thumb:hover {
background: #555;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
</style>
    <!-- 状态提示栏 -->
    <style>
        .toast-container { position: fixed; top: 1rem; right: 1rem; z-index: 9999; }
        .status-bar { position: fixed; top: 0; left: 0; right: 0; z-index: 50; }
        
        /* 表格频道分组样式 */
        .channel-group-even {
            background-color: rgba(59, 130, 246, 0.05) !important; /* 淡蓝色 */
        }
        .channel-group-odd {
            background-color: rgba(16, 185, 129, 0.05) !important; /* 淡绿色 */
        }
        .channel-divider {
            border-left: 3px solid #e5e7eb !important;
            box-shadow: -2px 0 4px rgba(0,0,0,0.1);
        }
        
        /* 表格行鼠标悬停效果 */
        #data-table tbody tr:hover .channel-group-even {
            background-color: rgba(59, 130, 246, 0.1) !important;
        }
        #data-table tbody tr:hover .channel-group-odd {
            background-color: rgba(16, 185, 129, 0.1) !important;
        }
        
        /* 防止表头文字折行 */
        #data-table th {
            white-space: nowrap !important;
            font-size: 0.875rem; /* 14px，稍微小一点确保单行显示 */
        }
        #data-table td {
            white-space: nowrap !important;
        }
    </style>
</head>
<body class="bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-50 min-h-screen font-sans">
    <!-- 状态提示栏 -->
    <div id="status-bar" class="hidden status-bar bg-blue-500 text-white p-3 text-center">
        <div class="flex items-center justify-center">
            <div class="animate-spin rounded-full h-4 w-4 border-b-2 border-white mr-2"></div>
            <span id="status-text">正在加载...</span>
        </div>
    </div>

    <!-- Toast 容器 -->
    <div id="toast-container" class="toast-container space-y-2"></div>

    <!-- 导航由 shared-navigation.js 统一管理，实现真正的组件复用 -->

    <!-- 面包屑导航 -->
    <div class="max-w-[1440px] mx-auto px-6 py-4">
        <nav class="flex items-center gap-2 text-sm text-gray-500" aria-label="面包屑导航" role="navigation">
            <a href="/" class="hover:text-primary-600 transition-colors" aria-label="返回首页">
                <i class="fas fa-home" aria-hidden="true"></i>
            </a>
            <span class="mx-2" aria-hidden="true">/</span>
            <span class="text-gray-700" aria-current="page">首页</span>
        </nav>
    </div>

    <!-- 页面标题区域 -->
    <!-- <div class="max-w-[1440px] mx-auto px-6 mb-8">
        <div class="text-center">
            <h2 class="text-3xl font-bold text-gray-800 mb-2">数据概览</h2>
            <p class="text-gray-600 max-w-2xl mx-auto">
                实时追踪您的YouTube频道表现，深入了解订阅增长、收入变化和内容趋势
            </p>
        </div>
    </div> -->

<!-- 主页面内容 -->
<main id="dashboard-page" class="max-w-[1440px] mx-auto px-6 pb-8" role="main">
    <!-- 页面标题 -->
    <section class="mb-8" aria-labelledby="dashboard-title">
        <h1 id="dashboard-title" class="sr-only">YouTube频道数据分析仪表板</h1>
        <div class="hidden">
            <h2>实时监控YouTube频道表现数据</h2>
            <p>追踪频道收入、订阅增长、播放量趋势，优化内容策略</p>
        </div>
    </section>


<div class="grid grid-cols-4 gap-6 mb-8">
<div class="bg-white rounded-xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition-shadow duration-300">
<div class="flex items-center gap-3 mb-5">
<div class="w-10 h-10 bg-gradient-to-br from-green-400 to-green-600 rounded-lg flex items-center justify-center">
<i class="fas fa-dollar-sign text-white text-lg"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">日收入排行</h3>
<p class="text-sm text-gray-500">今日收入表现</p>
</div>
</div>
<div id="daily-revenue-ranking" class="space-y-4">
<div class="text-center text-gray-400 py-8">
<div class="animate-pulse">
<div class="w-8 h-8 bg-gray-200 rounded-full mx-auto mb-2"></div>
<div class="h-4 bg-gray-200 rounded w-20 mx-auto"></div>
</div>
</div>
</div>
</div>

<div class="bg-white rounded-xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition-shadow duration-300">
<div class="flex items-center gap-3 mb-5">
<div class="w-10 h-10 bg-gradient-to-br from-blue-400 to-blue-600 rounded-lg flex items-center justify-center">
<i class="fas fa-chart-bar text-white text-lg"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">月收入排行</h3>
<p class="text-sm text-gray-500">本月累计收入</p>
</div>
</div>
<div id="monthly-revenue-ranking" class="space-y-4">
<div class="text-center text-gray-400 py-8">
<div class="animate-pulse">
<div class="w-8 h-8 bg-gray-200 rounded-full mx-auto mb-2"></div>
<div class="h-4 bg-gray-200 rounded w-20 mx-auto"></div>
</div>
</div>
</div>
</div>

<div class="bg-white rounded-xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition-shadow duration-300">
<div class="flex items-center gap-3 mb-5">
<div class="w-10 h-10 bg-gradient-to-br from-purple-400 to-purple-600 rounded-lg flex items-center justify-center">
<i class="fas fa-user-plus text-white text-lg"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">日新增订阅</h3>
<p class="text-sm text-gray-500">今日订阅增长</p>
</div>
</div>
<div id="daily-subscriber-ranking" class="space-y-4">
<div class="text-center text-gray-400 py-8">
<div class="animate-pulse">
<div class="w-8 h-8 bg-gray-200 rounded-full mx-auto mb-2"></div>
<div class="h-4 bg-gray-200 rounded w-20 mx-auto"></div>
</div>
</div>
</div>
</div>

<div class="bg-white rounded-xl shadow-lg border border-gray-100 p-6 hover:shadow-xl transition-shadow duration-300">
<div class="flex items-center gap-3 mb-5">
<div class="w-10 h-10 bg-gradient-to-br from-orange-400 to-orange-600 rounded-lg flex items-center justify-center">
<i class="fas fa-users text-white text-lg"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">月新增订阅</h3>
<p class="text-sm text-gray-500">本月订阅增长</p>
</div>
</div>
<div id="monthly-subscriber-ranking" class="space-y-4">
<div class="text-center text-gray-400 py-8">
<div class="animate-pulse">
<div class="w-8 h-8 bg-gray-200 rounded-full mx-auto mb-2"></div>
<div class="h-4 bg-gray-200 rounded w-20 mx-auto"></div>
</div>
</div>
</div>
</div>
</div>

<div class="bg-white rounded-xl shadow-medium border border-gray-100 mb-8 overflow-hidden">
<div class="p-6 border-b border-gray-100 bg-gradient-to-r from-gray-50 to-white">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 bg-gradient-to-br from-indigo-400 to-indigo-600 rounded-lg flex items-center justify-center">
<i class="fas fa-chart-area text-white text-sm"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">数据趋势图表</h3>
<p class="text-sm text-gray-500">可视化频道数据变化趋势</p>
</div>
</div>
        <div class="flex items-center gap-4">
        <div class="flex items-center gap-1 bg-gray-50 rounded-button p-1 border border-gray-200">
        <button id="chart-type-line" class="px-3 py-2 text-primary-600 bg-white border border-primary-200 rounded-md font-medium shadow-sm hover:bg-primary-50 transition-all duration-200" onclick="switchChartType('line')" title="折线图">
        <i class="fas fa-chart-line"></i>
        </button>
        <button id="chart-type-bar" class="px-3 py-2 text-gray-600 hover:text-primary-600 hover:bg-white rounded-md transition-all duration-200" onclick="switchChartType('bar')" title="柱状图">
        <i class="fas fa-chart-bar"></i>
        </button>
        <button id="chart-type-pie" class="px-3 py-2 text-gray-600 hover:text-primary-600 hover:bg-white rounded-md transition-all duration-200" onclick="switchChartType('pie')" title="饼图">
        <i class="fas fa-chart-pie"></i>
        </button>
        </div>
        <div class="flex items-center gap-2">
            <div class="flex items-center gap-1 bg-gray-50 rounded-button p-1 border border-gray-200">
                <button id="granularity-daily" class="px-3 py-2 text-primary-600 bg-white border border-primary-200 rounded-md font-medium shadow-sm hover:bg-primary-50 transition-all duration-200" onclick="switchGranularity('daily')" title="按天展示">
                    <i class="fas fa-calendar-day"></i>
                </button>
                <button id="granularity-monthly" class="px-3 py-2 text-gray-600 hover:text-primary-600 hover:bg-white rounded-md transition-all duration-200" onclick="switchGranularity('monthly')" title="按月展示">
                    <i class="fas fa-calendar-alt"></i>
                </button>
            </div>
            <div class="relative" id="time-range-wrapper">
                <select id="time-range" class="appearance-none px-4 py-2 pr-10 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none bg-white font-medium text-gray-700 cursor-pointer transition-all">
                    <option value="7" selected>最近 7 天</option>
                    <option value="30">最近 30 天</option>
                    <option value="90">最近 90 天</option>
                </select>
                <i class="fas fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 pointer-events-none"></i>
            </div>
            <div class="relative hidden" id="month-range-wrapper">
                <select id="month-range" class="appearance-none px-4 py-2 pr-10 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none bg-white font-medium text-gray-700 cursor-pointer transition-all">
                    <option value="3">最近 3 个月</option>
                    <option value="6" selected>最近 6 个月</option>
                    <option value="12">最近 12 个月</option>
                </select>
                <i class="fas fa-chevron-down absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 pointer-events-none"></i>
            </div>
        </div>
        </div>
</div>
</div>
<div id="main-chart" class="w-full h-[450px] p-4"></div>
</div>
<div class="bg-white rounded-xl shadow-medium border border-gray-100 overflow-hidden">
<div class="p-6 border-b border-gray-100 bg-gradient-to-r from-gray-50 to-white">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
<div class="w-8 h-8 bg-gradient-to-br from-emerald-400 to-emerald-600 rounded-lg flex items-center justify-center">
<i class="fas fa-table text-white text-sm"></i>
</div>
<div>
<h3 class="text-lg font-bold text-gray-800">频道管理</h3>
<p class="text-sm text-gray-500">管理频道和查看详细数据</p>
</div>
</div>
<div class="flex items-center gap-2">
<button onclick="openChannelFilterModal()" class="flex items-center gap-2 bg-gradient-to-r from-purple-500 to-purple-600 text-white px-4 py-2 rounded-button font-medium shadow-lg hover:from-purple-600 hover:to-purple-700 hover:shadow-xl transform hover:-translate-y-0.5 transition-all duration-200" title="筛选频道">
<i class="fas fa-filter text-sm"></i>
筛选频道
</button>
<button onclick="openAddChannelModal()" class="flex items-center gap-2 bg-gradient-to-r from-primary-500 to-primary-600 text-white px-4 py-2 rounded-button font-medium shadow-lg hover:from-primary-600 hover:to-primary-700 hover:shadow-xl transform hover:-translate-y-0.5 transition-all duration-200">
<i class="fas fa-plus text-sm"></i>
添加频道
</button>
<button onclick="refreshData()" class="px-4 py-2 text-gray-600 hover:text-primary-600 hover:bg-primary-50 rounded-button transition-all duration-200 border border-gray-200 hover:border-primary-200" title="刷新数据">
<i class="fas fa-sync-alt mr-2"></i>刷新
</button>
<button onclick="syncAllChannels()" class="px-4 py-2 text-info hover:text-blue-700 hover:bg-blue-50 rounded-button transition-all duration-200 border border-blue-200 hover:border-blue-300" title="立即同步所有频道">
<i class="fas fa-cloud-download-alt mr-2"></i>同步
</button>
<button onclick="exportData()" class="px-4 py-2 text-success hover:text-green-700 hover:bg-green-50 rounded-button transition-all duration-200 border border-green-200 hover:border-green-300" title="导出数据">
<i class="fas fa-download mr-2"></i>导出
</button>
</div>
</div>

</div>
<div class="table-container overflow-x-auto">
<table id="data-table" class="w-full border-collapse">
<thead>
<tr class="bg-gray-50">
<th class="sticky left-0 bg-gray-50 px-6 py-4 border-b border-gray-200 font-medium text-gray-500 text-left">日期</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center text-gray-500 py-8" colspan="100%">正在加载数据...</td>
</tr>
</tbody>
</table>
</div>
</div>
</main>

<!-- 频道管理页面 -->
<div id="channels-page" class="max-w-[1440px] mx-auto px-6 pb-8 hidden">

    <!-- 频道列表 -->
    <div class="bg-white rounded-xl shadow-medium border border-gray-100 overflow-hidden">
        <div class="p-6 border-b border-gray-100 bg-gradient-to-r from-gray-50 to-white">
            <!-- 合并为一行的布局 -->
            <div class="flex items-center justify-between gap-6">
                <!-- 左侧：标题和搜索 -->
                <div class="flex items-center gap-6 flex-1">
                    <div class="flex items-center gap-3">
                        <div class="w-8 h-8 bg-gradient-to-br from-indigo-400 to-indigo-600 rounded-lg flex items-center justify-center">
                            <i class="fas fa-list text-white text-sm"></i>
                        </div>
                        <div>
                            <h3 class="text-lg font-bold text-gray-800">频道列表</h3>
                        </div>
                    </div>
                    
                    <!-- 搜索框 -->
                    <div class="flex-1 max-w-md">
                        <div class="relative">
                            <input type="text" id="search-channels" placeholder="搜索频道名称或ID..." 
                                   class="w-full pl-10 pr-4 py-2.5 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none transition-all">
                            <i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
                        </div>
                    </div>
                </div>
                
                <!-- 右侧：筛选器和操作按钮 -->
                <div class="flex items-center gap-3">
                    <select id="filter-category" class="px-3 py-2.5 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none">
                        <option value="">所有分类</option>
                        <option value="科技">科技</option>
                        <option value="生活">生活</option>
                        <option value="娱乐">娱乐</option>
                        <option value="游戏">游戏</option>
                        <option value="教育">教育</option>
                        <option value="音乐">音乐</option>
                        <option value="美食">美食</option>
                        <option value="旅行">旅行</option>
                        <option value="其他">其他</option>
                    </select>
                    
                    <select id="filter-status" class="px-3 py-2.5 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none">
                        <option value="">所有状态</option>
                        <option value="active">活跃</option>
                        <option value="inactive">停用</option>
                    </select>
                    
                    <button onclick="clearFilters()" class="px-3 py-2.5 text-gray-600 hover:text-gray-800 border border-gray-300 rounded-button hover:bg-gray-50 transition-colors" title="清除筛选">
                        <i class="fas fa-times"></i>
                    </button>
                    
                    <div class="flex items-center gap-2">
                        <input type="checkbox" id="select-all-channels" class="rounded border-gray-300 text-primary-600 focus:border-primary-500 focus:ring-primary-500">
                        <label for="select-all-channels" class="text-sm text-gray-600">全选</label>
                    </div>
                    
                    <button id="batch-actions-btn" onclick="toggleBatchActions()" disabled class="px-3 py-2.5 bg-gray-100 text-gray-400 rounded-button font-medium cursor-not-allowed">
                        <i class="fas fa-cog mr-2"></i>批量操作
                    </button>
                    
                    <button onclick="openAddChannelModal()" class="flex items-center gap-2 bg-gradient-to-r from-primary-500 to-primary-600 text-white px-4 py-2.5 rounded-button font-medium shadow-lg hover:from-primary-600 hover:to-primary-700 hover:shadow-xl transition-all duration-200">
                        <i class="fas fa-plus text-sm"></i>
                        添加频道
                    </button>
                    
                    <button onclick="syncAllChannelsFromManagement()" class="flex items-center gap-2 bg-gradient-to-r from-info to-blue-600 text-white px-4 py-2.5 rounded-button font-medium shadow-lg hover:shadow-xl transition-all duration-200">
                        <i class="fas fa-sync-alt text-sm"></i>
                        同步所有
                    </button>
                </div>
            </div>
            
            <!-- 批量操作面板 -->
            <div id="batch-actions-panel" class="hidden mt-4 p-4 bg-blue-50 rounded-lg border border-blue-200">
                <div class="flex items-center gap-3">
                    <span class="text-sm font-medium text-blue-800">已选择 <span id="selected-count">0</span> 个频道</span>
                    <div class="flex items-center gap-2">
                        <button onclick="batchSync()" class="px-3 py-2 bg-blue-600 text-white rounded-button text-sm hover:bg-blue-700 transition-colors">
                            <i class="fas fa-sync-alt mr-1"></i>同步
                        </button>
                        <button onclick="batchToggleStatus()" class="px-3 py-2 bg-yellow-600 text-white rounded-button text-sm hover:bg-yellow-700 transition-colors">
                            <i class="fas fa-toggle-on mr-1"></i>切换状态
                        </button>
                        <button onclick="batchDelete()" class="px-3 py-2 bg-red-600 text-white rounded-button text-sm hover:bg-red-700 transition-colors">
                            <i class="fas fa-trash mr-1"></i>删除
                        </button>
                    </div>
                </div>
            </div>
        </div>
        
        <!-- 频道表格 -->
        <div class="overflow-x-auto">
            <table id="channels-table" class="w-full">
                <thead class="bg-gray-50">
                    <tr>
                        <th class="px-6 py-4 text-left">
                            <input type="checkbox" id="table-select-all" class="rounded border-gray-300 text-primary-600">
                        </th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500 cursor-pointer hover:text-gray-700" onclick="sortTable('name')">
                            频道名称 <i class="fas fa-sort ml-1"></i>
                        </th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500">分类</th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500 cursor-pointer hover:text-gray-700" onclick="sortTable('subscribers')">
                            订阅数 <i class="fas fa-sort ml-1"></i>
                        </th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500">CPM</th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500">状态</th>
                        <th class="px-6 py-4 text-left text-sm font-medium text-gray-500 cursor-pointer hover:text-gray-700" onclick="sortTable('updated_at')">
                            更新时间 <i class="fas fa-sort ml-1"></i>
                        </th>
                        <th class="px-6 py-4 text-center text-sm font-medium text-gray-500">操作</th>
                    </tr>
                </thead>
                <tbody id="channels-table-body" class="divide-y divide-gray-200">
                    <!-- 加载状态 -->
                    <tr>
                        <td colspan="8" class="px-6 py-12 text-center">
                            <div class="flex flex-col items-center justify-center">
                                <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 mb-4"></div>
                                <p class="text-gray-500">正在加载频道数据...</p>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
        
        <!-- 分页 -->
        <div id="pagination" class="px-6 py-4 border-t border-gray-200 bg-gray-50 flex items-center justify-between">
            <div class="text-sm text-gray-500">
                显示第 <span id="page-start">1</span> - <span id="page-end">10</span> 条，共 <span id="total-records">0</span> 条记录
            </div>
            <div class="flex items-center gap-2">
                <button id="prev-page" onclick="changePage(-1)" disabled class="px-3 py-2 border border-gray-300 rounded-button text-sm text-gray-500 bg-white hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed">
                    <i class="fas fa-chevron-left mr-1"></i>上一页
                </button>
                <div id="page-numbers" class="flex items-center gap-1">
                    <!-- 页码按钮将在这里动态生成 -->
                </div>
                <button id="next-page" onclick="changePage(1)" disabled class="px-3 py-2 border border-gray-300 rounded-button text-sm text-gray-500 bg-white hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed">
                    下一页 <i class="fas fa-chevron-right ml-1"></i>
                </button>
            </div>
        </div>
    </div>
</div>

<script>
const chart = echarts.init(document.getElementById('main-chart'));
const option = {
animation: false,
title: {
text: '频道数据趋势'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['科技探索频道', '生活分享频道', '游戏直播频道']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
boundaryGap: false,
data: ['1-14', '1-15', '1-16', '1-17', '1-18', '1-19', '1-20']
},
yAxis: {
type: 'value'
},
series: [
{
name: '科技探索频道',
type: 'line',
data: [12000, 13200, 14100, 14800, 15200, 15800, 16500]
},
{
name: '生活分享频道',
type: 'line',
data: [8200, 8900, 9300, 9800, 10200, 10800, 11200]
},
{
name: '游戏直播频道',
type: 'line',
data: [22000, 23100, 24200, 24800, 25200, 25900, 26500]
}
]
};
chart.setOption(option);
</script>

<!-- 添加频道模态框 -->
<div id="addChannelModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden flex items-center justify-center z-50 p-4">
    <div class="bg-white rounded-2xl shadow-strong max-w-lg w-full mx-4 transform transition-all duration-300 scale-95 opacity-0" id="modalContent">
        <div class="p-6 border-b border-gray-100 bg-gradient-to-r from-primary-50 to-indigo-50">
            <div class="flex items-center gap-3">
                <div class="w-10 h-10 bg-gradient-to-br from-primary-500 to-primary-600 rounded-xl flex items-center justify-center">
                    <i class="fas fa-plus text-white"></i>
                </div>
                <div>
                    <h3 class="text-xl font-bold text-gray-800">添加新频道</h3>
                    <p class="text-sm text-gray-600">输入YouTube频道信息开始数据追踪</p>
                </div>
            </div>
        </div>
        <div class="p-6">
            <form id="addChannelForm">
                <div class="mb-4">
                    <label class="block text-sm font-medium text-gray-700 mb-2">YouTube频道URL <span class="text-red-500">*</span></label>
                    <input type="url" id="channel-url" class="w-full px-3 py-2 border border-gray-300 !rounded-button focus:border-primary focus:outline-none" 
                           placeholder="https://www.youtube.com/channel/..." required>
                    <p class="text-sm text-gray-500 mt-1">支持频道URL、用户名URL、@句柄等格式</p>
                </div>
                
                <div class="mb-4">
                    <label class="block text-sm font-medium text-gray-700 mb-2">频道名称</label>
                    <input type="text" id="channel-name" class="w-full px-3 py-2 border border-gray-300 !rounded-button focus:border-primary focus:outline-none" 
                           placeholder="留空将自动从YouTube获取">
                </div>
                
                <!-- CPM 和分类设置 -->
                <div class="mb-4">
                    <div class="bg-gradient-to-r from-blue-50 to-indigo-50 rounded-xl p-4 border border-blue-100">
                        <div class="flex items-center gap-3 mb-3">
                            <div class="w-8 h-8 bg-gradient-to-br from-blue-400 to-blue-600 rounded-lg flex items-center justify-center">
                                <i class="fas fa-dollar-sign text-white text-sm"></i>
                            </div>
                            <div>
                                <h4 class="font-medium text-gray-800">收入设置</h4>
                                <p class="text-xs text-gray-600">设置该频道的CPM用于收入估算</p>
                            </div>
                        </div>
                        
                        <div class="grid grid-cols-2 gap-4">
                            <div>
                                <label class="block text-sm font-medium text-gray-700 mb-2">CPM值 (每千次展示费用)</label>
                                <div class="relative">
                                    <input type="number" id="channel-cpm" class="w-full px-3 py-2 pr-8 border border-gray-300 rounded-button bg-gray-50 focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none transition-all" 
                                           value="2.50" step="0.01" min="0" placeholder="自动根据分类计算" readonly>
                                    <span class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 text-sm">$</span>
                                </div>
                                <p id="channel-cpm-hint" class="text-xs text-gray-500 mt-1">默认CPM：$2.50</p>
                            </div>
                            <div>
                                <label class="block text-sm font-medium text-gray-700 mb-2">频道分类</label>
                                <select id="channel-category" class="w-full px-3 py-2 border border-gray-300 rounded-button focus:border-primary-500 focus:ring-2 focus:ring-primary-200 focus:outline-none transition-all">
                                    <option value="">选择分类</option>
                                </select>
                            </div>
                        </div>
                        
                        <!-- CPM 参考说明 -->
                        <div class="mt-3 p-3 bg-white/50 rounded-lg border border-blue-200/50">
                            <div class="flex items-start gap-2">
                                <i class="fas fa-info-circle text-blue-500 text-sm mt-0.5"></i>
                                <div class="text-xs text-gray-600">
                                    <p class="font-medium mb-1">系统会根据分类自动应用默认CPM：</p>
                                    <div class="space-y-1">
                                        <div class="flex justify-between"><span>科技:</span><span class="text-blue-600">$9.00</span></div>
                                        <div class="flex justify-between"><span>教育:</span><span class="text-blue-600">$4.00</span></div>
                                        <div class="flex justify-between"><span>娱乐:</span><span class="text-green-600">$3.00</span></div>
                                        <div class="flex justify-between"><span>转发:</span><span class="text-purple-600">$6.00</span></div>
                                    </div>
                                    <p class="mt-2">保存后可在“编辑频道”中查看或重新同步分类默认值。</p>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div id="channel-preview" class="hidden mb-4 p-4 bg-blue-50 !rounded-button">
                    <h6 class="text-sm font-medium text-blue-900 mb-2">频道预览：</h6>
                    <div id="preview-content"></div>
                </div>
            </form>
        </div>
        <div class="p-6 border-t border-gray-100 bg-gray-50/50 flex justify-end gap-3">
            <button onclick="closeAddChannelModal()" class="px-5 py-2.5 text-gray-600 hover:text-gray-800 hover:bg-gray-100 rounded-button font-medium transition-all duration-200">取消</button>
            <button onclick="previewChannel()" class="px-5 py-2.5 bg-gray-100 text-gray-700 hover:bg-gray-200 rounded-button font-medium transition-all duration-200 border border-gray-200">预览</button>
            <button onclick="addChannel()" class="px-5 py-2.5 bg-gradient-to-r from-primary-500 to-primary-600 text-white hover:from-primary-600 hover:to-primary-700 rounded-button font-medium shadow-lg hover:shadow-xl transition-all duration-200">添加频道</button>
        </div>
    </div>
</div>

<!-- 编辑频道模态框 -->
<div id="editChannelModal" class="fixed inset-0 bg-black bg-opacity-50 hidden z-50 flex items-center justify-center p-4">
    <div id="editModalContent" class="bg-white rounded-2xl shadow-2xl max-w-lg w-full max-h-[90vh] overflow-y-auto transform scale-95 opacity-0 transition-all duration-300">
        <div class="p-6 border-b border-gray-100">
            <div class="flex items-center justify-between">
                <div class="flex items-center gap-3">
                    <div class="w-10 h-10 bg-gradient-to-br from-blue-500 to-blue-600 rounded-lg flex items-center justify-center">
                        <i class="fas fa-edit text-white"></i>
                    </div>
                    <div>
                        <h3 class="text-xl font-bold text-gray-800">编辑频道</h3>
                        <p class="text-sm text-gray-500">修改频道信息和设置</p>
                    </div>
                </div>
                <button onclick="closeEditChannelModal()" class="p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-lg transition-colors">
                    <i class="fas fa-times text-lg"></i>
                </button>
            </div>
        </div>
        
        <div class="p-6">
            <form id="editChannelForm" class="space-y-6">
                <input type="hidden" id="edit-channel-id" name="channelId">
                
                <!-- 频道基本信息 -->
                <div class="space-y-4">
                    <div>
                        <label for="edit-channel-name" class="block text-sm font-medium text-gray-700 mb-2">频道名称</label>
                        <input type="text" id="edit-channel-name" name="name" required
                               class="w-full px-4 py-3 border border-gray-300 rounded-button focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition-colors"
                               placeholder="输入频道名称">
                    </div>
                    
                    <div>
                        <label for="edit-channel-category" class="block text-sm font-medium text-gray-700 mb-2">分类</label>
                        <select id="edit-channel-category" name="category"
                                class="w-full px-4 py-3 border border-gray-300 rounded-button focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition-colors">
                            <option value="">选择分类</option>
                            <option value="科技">科技</option>
                            <option value="教育">教育</option>
                            <option value="娱乐">娱乐</option>
                            <option value="生活">生活</option>
                            <option value="游戏">游戏</option>
                            <option value="音乐">音乐</option>
                            <option value="其他">其他</option>
                        </select>
                    </div>
                    
                    <div>
                        <label for="edit-channel-cpm" class="block text-sm font-medium text-gray-700 mb-2">CPM (每千次展示收入)</label>
                        <div class="relative">
                            <span class="absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-500">$</span>
                            <input type="number" id="edit-channel-cpm" name="cpm" step="0.01" min="0" required
                                   class="w-full pl-8 pr-4 py-3 border border-gray-300 rounded-button focus:ring-2 focus:ring-primary-500 focus:border-primary-500 transition-colors"
                                   placeholder="2.50">
                        </div>
                    </div>
                    
                    <div>
                        <label class="flex items-center gap-3 cursor-pointer">
                            <input type="checkbox" id="edit-channel-active" name="isActive" 
                                   class="w-5 h-5 text-primary-600 border-gray-300 rounded focus:ring-primary-500">
                            <span class="text-sm font-medium text-gray-700">启用频道数据同步</span>
                        </label>
                        <p class="text-xs text-gray-500 mt-1 ml-8">禁用后将不会自动同步该频道的数据</p>
                    </div>
                </div>
                
                <!-- 频道统计信息（只读） -->
                <div id="edit-channel-stats" class="bg-gray-50 rounded-lg p-4 space-y-3">
                    <h4 class="text-sm font-medium text-gray-700 mb-3">频道统计</h4>
                    <div class="grid grid-cols-2 gap-4 text-sm">
                        <div>
                            <span class="text-gray-500">订阅数:</span>
                            <span id="edit-stats-subscribers" class="font-medium text-gray-900 ml-2">-</span>
                        </div>
                        <div>
                            <span class="text-gray-500">总浏览量:</span>
                            <span id="edit-stats-views" class="font-medium text-gray-900 ml-2">-</span>
                        </div>
                        <div>
                            <span class="text-gray-500">视频数:</span>
                            <span id="edit-stats-videos" class="font-medium text-gray-900 ml-2">-</span>
                        </div>
                        <div>
                            <span class="text-gray-500">最后更新:</span>
                            <span id="edit-stats-updated" class="font-medium text-gray-900 ml-2">-</span>
                        </div>
                    </div>
                </div>
            </form>
        </div>
        
        <div class="p-6 border-t border-gray-100 bg-gray-50/50 flex justify-end gap-3">
            <button onclick="closeEditChannelModal()" class="px-5 py-2.5 text-gray-600 hover:text-gray-800 hover:bg-gray-100 rounded-button font-medium transition-all duration-200">取消</button>
            <button onclick="updateChannel()" class="px-5 py-2.5 bg-gradient-to-r from-primary-500 to-primary-600 text-white hover:from-primary-600 hover:to-primary-700 rounded-button font-medium shadow-lg hover:shadow-xl transition-all duration-200">保存修改</button>
        </div>
    </div>
</div>

<!-- 页脚 -->
<footer class="bg-white border-t border-gray-200 mt-16">
    <div class="max-w-[1440px] mx-auto px-6 py-12">
        <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
            <!-- 产品信息 -->
            <div class="col-span-1 md:col-span-2">
                <div class="flex items-center gap-3 mb-4">
                    <div class="w-8 h-8 bg-gradient-to-br from-red-500 to-red-600 rounded-lg flex items-center justify-center">
                        <i class="fab fa-youtube text-white text-lg"></i>
                    </div>
                    <h3 class="text-lg font-bold text-gray-800">YouTube Analytics</h3>
                </div>
                <p class="text-gray-600 mb-4 max-w-md">
                    专业的YouTube频道数据分析平台，帮助内容创作者深入了解频道表现，优化内容策略，提升订阅量和收入。
                </p>
                <div class="flex items-center gap-4">
                    <div class="flex items-center gap-2 text-sm text-gray-500">
                        <i class="fas fa-shield-alt text-green-500"></i>
                        <span>数据安全</span>
                    </div>
                    <div class="flex items-center gap-2 text-sm text-gray-500">
                        <i class="fas fa-clock text-blue-500"></i>
                        <span>实时更新</span>
                    </div>
                    <div class="flex items-center gap-2 text-sm text-gray-500">
                        <i class="fas fa-chart-line text-purple-500"></i>
                        <span>深度分析</span>
                    </div>
                </div>
            </div>
            
            <!-- 功能特性 -->
            <div>
                <h4 class="text-sm font-semibold text-gray-800 uppercase tracking-wider mb-4">核心功能</h4>
                <ul class="space-y-3">
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-trophy text-xs"></i>排行榜分析
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-chart-area text-xs"></i>趋势图表
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-table text-xs"></i>数据明细
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-download text-xs"></i>数据导出
                    </a></li>
                </ul>
            </div>
            
            <!-- 帮助支持 -->
            <div>
                <h4 class="text-sm font-semibold text-gray-800 uppercase tracking-wider mb-4">帮助支持</h4>
                <ul class="space-y-3">
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-question-circle text-xs"></i>使用指南
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-book text-xs"></i>API文档
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-life-ring text-xs"></i>技术支持
                    </a></li>
                    <li><a href="#" class="text-gray-600 hover:text-primary-600 transition-colors flex items-center gap-2">
                        <i class="fas fa-envelope text-xs"></i>联系我们
                    </a></li>
                </ul>
            </div>
        </div>
        
        <!-- 分割线 -->
        <div class="border-t border-gray-200 mt-8 pt-8">
            <div class="flex flex-col md:flex-row items-center justify-between gap-4">
                <!-- 版权信息 -->
                <div class="flex items-center gap-4 text-sm text-gray-500">
                    <span>&copy; 2025 YouTube Analytics. All rights reserved.</span>
                    <span class="hidden md:inline">|</span>
                    <a href="#" class="hover:text-primary-600 transition-colors">隐私政策</a>
                    <span class="hidden md:inline">|</span>
                    <a href="#" class="hover:text-primary-600 transition-colors">服务条款</a>
                </div>
                
                <!-- 技术信息 -->
                <div class="flex items-center gap-4 text-sm text-gray-500">
                    <div class="flex items-center gap-2">
                        <i class="fas fa-code text-blue-500"></i>
                        <span>Made with Flask + Tailwind CSS</span>
                    </div>
                    <div class="flex items-center gap-2">
                        <div class="w-2 h-2 bg-green-400 rounded-full animate-pulse"></div>
                        <span>服务运行中</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</footer>

<!-- 频道筛选弹层 -->
<div id="channelFilterModal" class="fixed inset-0 bg-black/60 backdrop-blur-sm hidden flex items-center justify-center z-50 p-4">
    <div class="bg-white rounded-2xl shadow-strong max-w-2xl w-full mx-4 max-h-[80vh] overflow-hidden transform transition-all duration-300 scale-95 opacity-0" id="channelFilterContent">
        <div class="p-6 border-b border-gray-100 bg-gradient-to-r from-purple-50 to-indigo-50">
            <div class="flex items-center justify-between">
                <div class="flex items-center gap-3">
                    <div class="w-10 h-10 bg-gradient-to-br from-purple-500 to-purple-600 rounded-xl flex items-center justify-center">
                        <i class="fas fa-filter text-white"></i>
                    </div>
                    <div>
                        <h3 class="text-xl font-bold text-gray-800">筛选频道</h3>
                        <p class="text-sm text-gray-600">选择要在数据表格中显示的频道</p>
                    </div>
                </div>
                <button onclick="closeChannelFilterModal()" class="p-2 text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-lg transition-colors">
                    <i class="fas fa-times text-lg"></i>
                </button>
            </div>
        </div>
        
        <div class="p-6 flex-1 overflow-y-auto">
            <!-- 操作按钮区域 -->
            <div class="mb-6 flex items-center justify-between">
                <div class="flex items-center gap-3">
                    <button onclick="selectAllChannels()" class="px-4 py-2 bg-blue-500 text-white rounded-button hover:bg-blue-600 transition-colors text-sm font-medium">
                        <i class="fas fa-check-double mr-2"></i>全选
                    </button>
                    <button onclick="clearAllChannels()" class="px-4 py-2 bg-gray-500 text-white rounded-button hover:bg-gray-600 transition-colors text-sm font-medium">
                        <i class="fas fa-times mr-2"></i>清空
                    </button>
                    <button onclick="toggleAllChannelSelection()" class="px-4 py-2 bg-purple-500 text-white rounded-button hover:bg-purple-600 transition-colors text-sm font-medium">
                        <i class="fas fa-exchange-alt mr-2"></i>反选
                    </button>
                </div>
                <div class="text-sm text-gray-600">
                    已选择: <span id="selectedChannelCount" class="font-bold text-purple-600">0</span> 个频道
                </div>
            </div>
            
            <!-- 搜索框 -->
            <div class="mb-4">
                <div class="relative">
                    <input type="text" id="channelFilterSearch" placeholder="搜索频道名称..." 
                           class="w-full pl-10 pr-4 py-3 border border-gray-300 rounded-button focus:border-purple-500 focus:ring-2 focus:ring-purple-200 focus:outline-none transition-all">
                    <i class="fas fa-search absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400"></i>
                </div>
            </div>
            
            <!-- 筛选条件 -->
            <div class="mb-4 grid grid-cols-2 gap-4">
                <div>
                    <label class="block text-sm font-medium text-gray-700 mb-2">按分类筛选</label>
                    <select id="categoryFilter" class="w-full px-3 py-2 border border-gray-300 rounded-button focus:border-purple-500 focus:ring-2 focus:ring-purple-200 focus:outline-none">
                        <option value="">所有分类</option>
                        <option value="科技">科技</option>
                        <option value="生活">生活</option>
                        <option value="娱乐">娱乐</option>
                        <option value="游戏">游戏</option>
                        <option value="教育">教育</option>
                        <option value="音乐">音乐</option>
                        <option value="美食">美食</option>
                        <option value="旅行">旅行</option>
                        <option value="其他">其他</option>
                    </select>
                </div>
                <div>
                    <label class="block text-sm font-medium text-gray-700 mb-2">按状态筛选</label>
                    <select id="statusFilter" class="w-full px-3 py-2 border border-gray-300 rounded-button focus:border-purple-500 focus:ring-2 focus:ring-purple-200 focus:outline-none">
                        <option value="">所有状态</option>
                        <option value="active">活跃频道</option>
                        <option value="inactive">暂停频道</option>
                    </select>
                </div>
            </div>
            
            <!-- 频道列表 -->
            <div class="border border-gray-200 rounded-lg max-h-80 overflow-y-auto">
                <div id="channelFilterList" class="divide-y divide-gray-100">
                    <!-- 加载状态 -->
                    <div id="channelFilterLoading" class="p-8 text-center text-gray-500">
                        <div class="animate-spin inline-block w-6 h-6 border-2 border-current border-t-transparent rounded-full mb-2"></div>
                        <div>正在加载频道列表...</div>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="p-6 border-t border-gray-100 bg-gray-50 flex items-center justify-between">
            <div class="text-sm text-gray-600">
                提示：取消选择的频道将不会在数据表格中显示
            </div>
            <div class="flex items-center gap-3">
                <button onclick="closeChannelFilterModal()" class="px-4 py-2 text-gray-600 hover:text-gray-800 border border-gray-300 rounded-button hover:bg-gray-100 transition-colors">
                    取消
                </button>
                <button onclick="applyChannelFilter()" class="px-6 py-2 bg-gradient-to-r from-purple-500 to-purple-600 text-white rounded-button font-medium shadow-lg hover:from-purple-600 hover:to-purple-700 hover:shadow-xl transition-all">
                    <i class="fas fa-check mr-2"></i>应用筛选
                </button>
            </div>
        </div>
    </div>
</div>

<!-- JavaScript -->
<script src="js/env.js?v=20250720-002"></script>
<script>
// 设置全局API配置
window.API_BASE_URL = API_BASE_URL;
</script>
<script src="js/config.js?v=20250110-001"></script>
<script src="js/utils.js?v=20250110-001"></script>
<script src="js/api.js?v=20250110-002"></script>
<script src="js/data-table.js?v=20250110-006"></script>
<script src="js/dashboard.js?v=20250110-001"></script>
<script src="js/new-main.js?v=20250110-002"></script>
<script src="js/channel-management.js?v=20250110-003"></script>
<script src="js/shared-navigation.js"></script>
</body>
</html>
